package DBconfing

import (
	"database/sql"
	"fmt"
	"github.com/go-redis/redis"
	"github.com/spf13/viper"
)

func Mysql() (*sql.DB, error) {
	var sqlDb *sql.DB
	//1、打开数据库
	//parseTime:时间格式转换(查询结果为时间时，是否自动解析为时间);
	// loc=Local：MySQL的时区设置
	viper.SetConfigName("config.yml")
	viper.SetConfigType("yaml")
	viper.AddConfigPath("./config")
	err := viper.ReadInConfig()
	if err != nil {
		panic(fmt.Errorf("无法读取配置文件: %s", err))
	}
	sqlStr := viper.GetString("mysql.username") + ":" +
		viper.GetString("mysql.password") + "@tcp(" +
		viper.GetString("mysql.host") + ":" + viper.GetString("mysql.port") + ")/" +
		viper.GetString("mysql.database") + "?charset=utf8&parseTime=true&loc=Local"
	sqlDb, err = sql.Open("mysql", sqlStr)
	if err != nil {
		fmt.Println("数据库打开出现了问题：", err)
		return nil, err
	}
	//2、 测试与数据库建立的连接（校验连接是否正确）
	err = sqlDb.Ping()
	if err != nil {
		fmt.Println("数据库连接出现了问题：", err)
		return nil, err
	}
	println("mysql连接成功")
	return sqlDb, nil
}
func ConnRedis() (*redis.Client, error) {
	viper.SetConfigName("config.yml")
	viper.SetConfigType("yaml")
	viper.AddConfigPath("./config")
	err := viper.ReadInConfig()
	if err != nil {
		panic(fmt.Errorf("无法读取配置文件: %s", err))
	}
	red := redis.NewClient(&redis.Options{
		Network:  viper.GetString("redis.Network"),
		Addr:     viper.GetString("redis.host") + ":" + viper.GetString("redis.port"), // url
		Password: viper.GetString("redis.password"),
		DB:       0, // 0号数据库
	})
	result, err := red.Ping().Result()
	if err != nil {
		fmt.Println("ping err :", err)
		return nil, err
	}
	fmt.Println(result)
	return red, nil
}
